package com.learn.template;

public abstract class Human {
    // eat,drink,speak都可以看做基本方法

    // 可以吃
    public abstract void eat();
    // 可以喝
    public abstract void drink();
    // 可以说话
    public abstract void speak();


    // init方法可以看做模板方法
    protected void init() {
        eat();
        drink();
        speak();

        if (this.hasBaby()) {
            System.out.println("has baby");
        }
    }

    // 钩子函数，默认是false
    protected boolean hasBaby() {
        return false;
    }
}
